package guitest;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.SwingUtilities;

import domein.DomeinController;
import javax.swing.BorderFactory;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class MainFrame extends javax.swing.JFrame 
{
/*Attributen*/
	//Menu
	private JMenuBar hoofdMenu;
	private JMenu fileMenu;
	private JMenuItem afmeldenItem;
	private JMenuItem afsluitenItem;
	private JMenu huurovereenkomstMenu;
	private JMenuItem beheerHuurovereenkomstItem;
	private JMenuItem maakHuurovereenkomstItem;
	private JMenuItem startendeHuurovereenkomstenItem;
	private JMenu medewerkerMenu;
	private JMenu wagenMenu;
	private JMenu klantenMenu;
	
	//mainpaneel
	private JPanel mainPaneel;
	
	//taalpanel
	private JLabel taalLabel;
	private JComboBox taalComboBox;
	private String taal[] = new String[]{ "Engels", "Frans","Nederlands" };
	private JPanel taalPaneel;
	private JButton btnAfmelden;
	
	//inlogpanel
	private JPanel inlogPaneel;
	private JLabel lblPaswoord;
	private JLabel lblGebruikersNaam;
	private JPasswordField pwdWachtwoord;
	private JTextField txfNaam;
	private JButton btnAanmelden;
	private JLabel lblFoutmelding;
	
	//afbeeldingpanel
	private JPanel afbeeldingPaneel;
	private JLabel afbeeldingLabel;
	
	//algemeen
	private String titel;
	private DomeinController domeinController;
	private ResourceBundle berichten;
	private InputListener invoer = new InputListener();
	private ItemLuisteraar luister = new ItemLuisteraar();


	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				MainFrame inst = new MainFrame(new DomeinController());
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	public MainFrame(DomeinController controller) {
		super("Rent-a-Car");
		this.domeinController = controller;
		this.maakFrame();
		this.maakMenu(false);
		this.maakTaalpaneel(false);
		this.maakStartpaneel();
		this.kiesTaal(3);
	}
	public void kiesTaal(int keuze)
	{
		String taal;
		switch (keuze)
		{
			case 1:
				taal = "en";
				break;
			case 2:
				taal = "fr";
				break;
			default:
				taal = "nl";
				break;
		}
		this.berichten = ResourceBundle.getBundle("MessagesBundle", new Locale(
				taal));
		this.setTekst();
		//wijzigt de taal van de medewerker en slaat het direct op
		/*if (domeinController.getIngelogdeMedewerker().getTaal() != keuze)
			domeinController.getIngelogdeMedewerker().setTaal(keuze);*/
	}
	private void wijzigTitel()
	{
		this.titel = "Rent-a-Car";
		this.setTitle(titel);
	}
	private void wijzigTitel(String ding)
	{
		this.wijzigTitel();
		this.titel =  this.titel + " - " + ding;
		this.setTitle(titel);
	}
	private void maakFrame()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(null);
		setIconImage((new ImageIcon("icon.png")).getImage());
		this.setResizable(false);
		this.setSize(800, 600);
		
		//verander de look & feel
		try
		{
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} 
		catch (Exception e)
		{
			//e.printStackTrace();
		}
	}
	private void maakMenu(boolean waarde)
	{
		//Menu
		hoofdMenu = new JMenuBar();
		hoofdMenu.setSize(794, 20);
		setJMenuBar(hoofdMenu);
			
		//Submenu's
		fileMenu = new JMenu();				
		hoofdMenu.add(fileMenu);
			afmeldenItem = new JMenuItem();
			afsluitenItem = new JMenuItem();
			afmeldenItem.addActionListener(invoer);
			afsluitenItem.addActionListener(invoer);
			afsluitenItem.setIcon(new ImageIcon("icon.png"));
			fileMenu.add(afmeldenItem);
			fileMenu.add(afsluitenItem);
			
		huurovereenkomstMenu = new JMenu();
		hoofdMenu.add(huurovereenkomstMenu);
				maakHuurovereenkomstItem = new JMenuItem();
				beheerHuurovereenkomstItem = new JMenuItem();
				startendeHuurovereenkomstenItem = new JMenuItem();
				huurovereenkomstMenu.add(maakHuurovereenkomstItem);
				huurovereenkomstMenu.add(beheerHuurovereenkomstItem);
				huurovereenkomstMenu.add(startendeHuurovereenkomstenItem);
				
		klantenMenu = new JMenu();
		hoofdMenu.add(klantenMenu);
		
		wagenMenu = new JMenu();
		hoofdMenu.add(wagenMenu);

		medewerkerMenu = new JMenu();
		hoofdMenu.add(medewerkerMenu);
		
		this.maakMenuBeschikbaar(waarde);
	}
	private void maakTaalpaneel(boolean waarde)
	{
		//Taalpaneel
		taalPaneel = new JPanel();
		getContentPane().add(taalPaneel);
		taalPaneel.setBounds(0, 0, 794, 26);
		taalPaneel.setLayout(null);
		
			//Taallabel
			taalLabel = new JLabel();
			taalPaneel.add(taalLabel);
			taalLabel.setBounds(525, 8, 57, 14);
			taalLabel.setHorizontalAlignment(SwingConstants.RIGHT);
			
			//Taalkeuze
			taalComboBox = new JComboBox();
			taalPaneel.add(taalComboBox);
			taalComboBox.setModel(new DefaultComboBoxModel(this.taal));
			taalComboBox.setBounds(594, 5, 96, 21);
			taalComboBox.setSelectedIndex(2);
			taalComboBox.addItemListener(luister);
			
					
			//AfmeldKnop
			btnAfmelden = new JButton();
			taalPaneel.add(btnAfmelden);
			btnAfmelden.setBounds(705, 4, 77, 23);
			btnAfmelden.addActionListener(invoer);
			
		this.toonTaalbalk(waarde);
	}
	private void maakStartpaneel()
	{
//		Mainpaneel
		mainPaneel = new JPanel();
		getContentPane().add(mainPaneel);
		mainPaneel.setLayout(null);
		mainPaneel.setBounds(0, 26, 794, 521);
			//Afbeeldingpaneel
			afbeeldingPaneel = new JPanel();
			mainPaneel.add(afbeeldingPaneel);
			afbeeldingPaneel.setBounds(12, 12, 400, 478);
			afbeeldingPaneel.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
			afbeeldingPaneel.setLayout(null);
				//afbeeldinglabel
				afbeeldingLabel = new JLabel();
				afbeeldingPaneel.add(afbeeldingLabel);
				afbeeldingLabel.setIcon(new ImageIcon(getClass().getClassLoader().getResource("carkey.png")));
				afbeeldingLabel.setBounds(8, 8, 384, 462);
			
			//Inlogpaneel
			inlogPaneel = new JPanel();
			mainPaneel.add(inlogPaneel);
			inlogPaneel.setBounds(418, 157, 362, 165);
			inlogPaneel.setBorder(BorderFactory.createTitledBorder("Login"));
			inlogPaneel.setLayout(null);
				//gebruikerlabel
				lblGebruikersNaam = new JLabel();
				inlogPaneel.add(lblGebruikersNaam);
				lblGebruikersNaam.setBounds(60, 35, 81, 14);
				lblGebruikersNaam.setHorizontalAlignment(SwingConstants.RIGHT);
				//paswoordlabel
				lblPaswoord = new JLabel();
				inlogPaneel.add(lblPaswoord);
				lblPaswoord.setBounds(60, 68, 81, 14);
				lblPaswoord.setHorizontalAlignment(SwingConstants.RIGHT);
				
				//naamtextfield
				txfNaam = new JTextField();
				inlogPaneel.add(txfNaam);
				txfNaam.setBounds(151, 33, 102, 20);
				txfNaam.addActionListener(invoer);
				
				//wachtwoordfield
				pwdWachtwoord = new JPasswordField();
				inlogPaneel.add(pwdWachtwoord);
				pwdWachtwoord.setBounds(151, 64, 102, 20);
				pwdWachtwoord.addActionListener(invoer);
				//aanmeldknop
				btnAanmelden = new JButton();
				inlogPaneel.add(btnAanmelden);
				btnAanmelden.setBounds(151, 95, 102, 23);
				btnAanmelden.addActionListener(invoer);
				//foutmeldinglabel
				lblFoutmelding = new JLabel();
				inlogPaneel.add(lblFoutmelding);
				lblFoutmelding.setBounds(8, 129, 346, 20);
				lblFoutmelding.setHorizontalAlignment(SwingConstants.CENTER);
				lblFoutmelding.setFont(new java.awt.Font("Tahoma",1,11));
				lblFoutmelding.setForeground(new java.awt.Color(255,0,0));
	}
	
	private void inloggen()
	{
		this.domeinController.logGebruikerIn(this.txfNaam.getText(), this.pwdWachtwoord.getText());
		this.maakMenuBeschikbaar(true);
		this.toonTaalbalk(true);
		this.inlogPaneel.setVisible(false);
		this.kiesTaal(domeinController.getIngelogdeMedewerker().getTaal());
		this.taalComboBox.setSelectedIndex(domeinController.getIngelogdeMedewerker().getTaal()-1);
		this.wijzigTitel("gome");
	}
	private void uitloggen()
	{
		this.domeinController.logGebruikerUit();
		this.maakMenuBeschikbaar(false);
		this.toonTaalbalk(false);
		this.inlogPaneel.setVisible(true);
	}
	private void afsluiten()
	{
		System.exit(1);
	}
	private void maakMenuBeschikbaar(boolean waarde)
	{
		fileMenu.setEnabled(waarde);
		huurovereenkomstMenu.setEnabled(waarde);
		klantenMenu.setEnabled(waarde);
		wagenMenu.setEnabled(waarde);
		medewerkerMenu.setEnabled(waarde);
	}
	private void toonTaalbalk(boolean waarde)
	{
		taalLabel.setVisible(waarde);
		taalComboBox.setVisible(waarde);
		btnAfmelden.setVisible(waarde);
	}
	public void setTekst()
	{
		/*Menubalk*/
		//fileMenu.setText("Bestand");
		fileMenu.setText(berichten.getString("bestand"));
			afmeldenItem.setText("Afmelden");
			afsluitenItem.setText("Afsluiten");
		huurovereenkomstMenu.setText("Huurovereenkomst");
			maakHuurovereenkomstItem.setText("Maak huurovereenkomst");
			beheerHuurovereenkomstItem.setText("Beheer huurovereenkomsten");
			startendeHuurovereenkomstenItem.setText("Startende huurovereenkomsten");
		klantenMenu.setText("Klanten");
		wagenMenu.setText("Wagens");
		medewerkerMenu.setText("Medewerkers");
		
		/*Werkbalk*/
		taalLabel.setText("Taal:");
		//this.taal = new String[]{ "Engels2", "Frans","Nederlands" };
		btnAfmelden.setText("Afmelden");
		
		/*Inlogpaneel*/
		lblGebruikersNaam.setText("Gebruikersnaam:");
		lblPaswoord.setText("Wachtwoord:");
		btnAanmelden.setText("Aanmelden");
		
	}
	
	private class ItemLuisteraar implements ItemListener
	{

		public void itemStateChanged(ItemEvent ie)
		{
			int i = taalComboBox.getSelectedIndex();
			kiesTaal(i+1);
		}
		
	}
	private class InputListener implements ActionListener
	{

		public void actionPerformed(ActionEvent a)
		{
			try
			{
				if(a.getSource().equals(btnAanmelden) || a.getSource().equals(txfNaam) || a.getSource().equals(pwdWachtwoord))
					{inloggen();taalComboBox.setEnabled(true);}
				else if(a.getSource().equals(btnAfmelden) || a.getSource().equals(afmeldenItem))
					uitloggen();
				else if(a.getSource().equals(afsluitenItem))
					afsluiten();
			}
			catch(IllegalArgumentException e)
			{
				lblFoutmelding.setText(e.getMessage());
			}
		}
		
	}
}
